package Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import Modelo.*;


public class AdministradorPersistenciaCliente 
{
	private static AdministradorPersistenciaCliente pool;
	
	private AdministradorPersistenciaCliente()
	{
		
	}
	
	public static AdministradorPersistenciaCliente getInstancia()
	{
		if (pool== null)
			pool =new AdministradorPersistenciaCliente();
		return pool;
	}
	
	public void insert(Cliente c)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
//			String senten = "INSERT INTO tempdb.dbo.clientes (dni, nombre) VALUES (?,?)" ;
			String senten = "INSERT INTO parcialTarjetas.dbo.clientes (dni, nombre) VALUES (?,?)" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setString(1,c.getDni());
			ps.setString(2,c.getNombre());
			ps.execute();
			PoolConnection.getPoolConnection().closeConnections();
			System.out.println("Cliente creado con exito!! :-D");
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Insertar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Insertar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().closeConnections();
	      }
	      
	}
/*	public void update(Cliente c)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "UPDATE cliente set nombre = ? ,domicilio = ? ,telefono = ? where dni = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setString(1,c.getNombre());
			ps.setString(2,c.getDomicilio());
			ps.setString(3,c.getTelefono());
			ps.setString(4,c.getDni());
			ps.execute();
			
			PoolConnection.getPoolConnection().closeConnections();
			
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Modificar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Modificar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().closeConnections();
	      }
	      
		
	}*/
/*	public void delete (Cliente c)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "DELETE from cliente where dni = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setString(1,c.getDni());
			ps.execute();
			
			PoolConnection.getPoolConnection().closeConnections();
			
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Borrar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Borrar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().closeConnections();
	      }
	      

	}*/

	public Cliente buscarCliente(String dni)
	{
		try
		{
			Cliente c = null;
			
			//Obtener conexion BD 
			Connection con = PoolConnection.getPoolConnection().getConnection();
		
			//Generar sentencia SQL
//			PreparedStatement s = con.prepareStatement("select * from tempdb.dbo.clientes where dni = ?");			//agregar campos
			PreparedStatement s = con.prepareStatement("select * from parcialTarjetas.dbo.clientes where dni = ?");			//agregar campos
			s.setString(1,dni);
			ResultSet result = s.executeQuery();
			
			//Preparar sentencia insert en tabla destino
			while (result.next())
			{
				c = new Cliente();
				c.setNombre(result.getString("nombre"));
				c.setDni(result.getString("dni"));
			}
			
			PoolConnection.getPoolConnection().closeConnections();
			return c;
		}
	    catch( SQLException e ) 
	    {
			System.out.println("Mensaje Error al Borrar Cliente: " + e.getMessage());
			System.out.println("Stack Trace al Borrar Cliente: " + e.getStackTrace());
			PoolConnection.getPoolConnection().closeConnections();
	    }
	     return null;
	}

	
}